﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace Dominio
{
    [DataContract]
    public class Carpeta:ObjetoBuzon
    {
        private String nombre;

        [DataMember]
        public String Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        private Carpeta padre;

        public Carpeta Padre
        {
            get { return padre; }
            set { padre = value; }
        }

        private Buzon buzonPadre;

        public Buzon BuzonPadre
        {
            get { return buzonPadre; }
            set { buzonPadre = value; }
        }

        private List<ObjetoBuzon> objetosBuzon;

        [DataMember]
        public List<ObjetoBuzon> ObjetosBuzon
        {
            get { return objetosBuzon; }
            set { objetosBuzon = value; }
        }

        public Carpeta()
        {
            Nombre = null;
            Padre = null;
            ObjetosBuzon = new List<ObjetoBuzon>();
            BuzonPadre = null;
            this.Agregarse();
        }

        public Carpeta(String nombre, Carpeta padre, Buzon buzon)
        {
            Nombre = nombre;
            Padre = padre;
            ObjetosBuzon = new List<ObjetoBuzon>();
            BuzonPadre = buzon;
            this.Agregarse();
            
        }

        internal void AgregarObjetoBuzon(ObjetoBuzon objBuzon)
        {
            ObjetosBuzon.Add(objBuzon);
            this.Modificarse();
        }

        internal void EliminarObjetoBuzon(ObjetoBuzon objBuzon)
        {
            ObjetosBuzon.Remove(objBuzon);
            this.Modificarse();
        }

        internal override void Accept(IVisitor visitor)
        {
            visitor.VisitCarpeta(this);
        }



    }
}
